package entorno;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class Anillo {
	private ArrayList<Queue<NodoOvi>> listaDeColas = new ArrayList<Queue<NodoOvi>>();
	private Queue<NodoOvi> disparaAlSur = new LinkedList<NodoOvi>();
	private Queue<NodoOvi> disparaAlNorte = new LinkedList<NodoOvi>();
	private Queue<NodoOvi> disparaAlOeste = new LinkedList<NodoOvi>();
	private Queue<NodoOvi> disparaAlEste = new LinkedList<NodoOvi>();
	
	public Anillo(){
		this.listaDeColas.add(disparaAlEste);
		this.listaDeColas.add(disparaAlNorte);
		this.listaDeColas.add(disparaAlOeste);
		this.listaDeColas.add(disparaAlSur);
		
		
	}
	
	public synchronized void ponerNodo(int bateria, NodoOvi nodo){
		this.listaDeColas.get(bateria).add(nodo);
	}
	
	public synchronized NodoOvi sacarNodo(int bateria){	
		return this.listaDeColas.get(bateria).poll();
	}

	public synchronized void transferirNodo(int hacia){
		int desde =hacia+1;
		if(hacia==3){
			desde=0;
		}
		
		this.ponerNodo(hacia, this.sacarNodo(desde));
		
		/*
		
		
		//Norte(1), Sur(3), Este(0) u Oeste(2)
		if (hacia == 1){
			this.disparaAlNorte.add(this.disparaAlOeste.poll());
		}
		else if (hacia == 0){
			this.disparaAlEste.add(this.disparaAlNorte.poll());
		}
		else if (hacia == 3){
			this.disparaAlSur.add(this.disparaAlEste.poll());
		}
		else if (hacia == 2){
			this.disparaAlOeste.add(this.disparaAlSur.poll());
		}
		*/
	}
}

